/*******************************************************************************
 * Copyright (c) 2008, 2009 Fabio Mauro - Alberto Terraneo.
 * Permission is granted to copy, distribute and/or modify this document
 * under the terms of the GNU Free Documentation License, Version 1.2
 * or any later version published by the Free Software Foundation.
 *     
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied 
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU Free Documentation License for more details.
 *     
 * You should have received a copy of the GNU Free Documentation 
 * License along with this distribution; if not, send a email to authors:
 * aterraneo <at> users.sourceforge.net
 * bigmoby09 <at> users.sourceforge.net
 *******************************************************************************/
package it.blueocean.acanto.model;

import it.blueocean.acanto.model.common.ABaseEntity;
import it.blueocean.acanto.model.constants.Provincia;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Type;

@Entity
@Table(name = "TA_FORNITORI")
public class Fornitore extends ABaseEntity implements Serializable
{
    private static final long serialVersionUID = 1713093263078178562L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "FORNITORE_ID", unique = true, nullable = false)
    private long id;

    @Column(name = "CODICE_FORNITORE_LONG", unique = true, length = 20)
    private String codiceFornitoreLong;

    @Column(name = "CODICE_FORNITORE_SHORT", unique = true, length = 5)
    private String codiceFornitoreShort;

    @Column(name = "RAGIONE_SOCIALE", length = 70)
    private String ragioneSociale;

    @Column(name = "CODICE_FISCALE", length = 16)
    private String codiceFiscale;

    @Column(name = "PIVA", length = 11)
    private String piva;

    @Column(name = "REGISTRAZIONE_TRIBUNALE", length = 50)
    private String registrazioneTribunale;

    @Column(name = "ISCRIZIONE_CCIA", length = 50)
    private String iscrizioneCcia;

    @Column(name = "CAPITALE_SOCIALE", precision = 10)
    private BigDecimal capitaleSociale;

    @Column(name = "INDIRIZZO_SL", length = 70)
    private String indirizzoSl;

    @Column(name = "COMUNE_SL", length = 35)
    private String comuneSl;

    @Column(name = "PROVINCIA_SL", length = 30)
    @Enumerated(EnumType.STRING)
    private Provincia provinciaSl;

    @Column(name = "CAP_SL", length = 5)
    private String capSl;

    @Column(name = "STATO_SL", length = 50)
    private String statoSl;

    @Column(name = "CODICE_ISO_SL", length = 2)
    private String codiceIsoSl;

    @Column(name = "COGNOME_REFERENTE_SL", length = 50)
    private String cognomeReferenteSl;

    @Column(name = "NOME_REFERENTE_SL", length = 50)
    private String nomeReferenteSl;

    @Column(name = "TELEFONO_SL", length = 35)
    private String telefonoSl;

    @Column(name = "FAX_SL", length = 35)
    private String faxSl;

    @Column(name = "TELEX_SL", length = 35)
    private String telexSl;

    @Column(name = "EMAIL_SL", length = 100)
    private String emailSl;

    @Column(name = "INDIRIZZO_SA", length = 70)
    private String indirizzoSa;

    @Column(name = "COMUNE_SA", length = 35)
    private String comuneSa;

    @Column(name = "PROVINCIA_SA", length = 30)
    @Enumerated(EnumType.STRING)
    private Provincia provinciaSa;

    @Column(name = "CAP_SA", length = 5)
    private String capSa;

    @Column(name = "STATO_SA", length = 50)
    private String statoSa;

    @Column(name = "COGNOME_REFERENTE_SA", length = 50)
    private String cognomeReferenteSa;

    @Column(name = "NOME_REFERENTE_SA", length = 50)
    private String nomeReferenteSa;

    @Column(name = "TELEFONO_SA", length = 35)
    private String telefonoSa;

    @Column(name = "MOBILE_SA", length = 35)
    private String mobileSa;

    @Column(name = "MOBILE_SL", length = 35)
    private String mobileSl;

    @Column(name = "FAX_SA", length = 35)
    private String faxSa;

    @Column(name = "TELEX_SA", length = 35)
    private String telexSa;

    @Column(name = "EMAIL_SA", length = 100)
    private String emailSa;

    @Column(name = "OPZIONE_DLG84_2005")
    @Type(type = "org.hibernate.type.TrueFalseType")
    private boolean opzioneDlg842005;

    @Column(name = "CONTO_CORRENTE", length = 12)
    private String contoCorrente;

    @Column(name = "CAB", length = 5)
    private String cab;

    @Column(name = "ABI", length = 5)
    private String abi;

    @Column(name = "CIN", length = 1)
    private String cin;

    @Column(name = "CHECK_DIGIT", length = 2)
    private String checkdigit;

    @Column(name = "IBAN", length = 27)
    private String iban;

    @Column(name = "DENOMINAZIONE_BANCA", length = 70)
    private String denominazioneBanca;

    @Column(name = "DENOMINAZIONE_SPORTELLO", length = 70)
    private String denominazioneSportello;

    @Column(name = "NOTE")
    private String note;

    @Column(name = "STATUS", length = 40)
    private String status;
    
    @Column(name = "SITO_WEB")
    private String sitoWeb;
    
    @OneToOne(fetch = FetchType.EAGER)
	private Ruolo ruolo;

    public Fornitore()
    {
    }

    public long getId()
    {
        return this.id;
    }

    public void setId(long fornitoreId)
    {
        this.id = fornitoreId;
    }
    
    public String getCodiceFornitoreLong()
    {
        return codiceFornitoreLong;
    }

    public void setCodiceFornitoreLong(String codiceFornitoreLong)
    {
        this.codiceFornitoreLong = codiceFornitoreLong;
    }

    public String getCodiceFornitoreShort()
    {
        return codiceFornitoreShort;
    }

    public void setCodiceFornitoreShort(String codiceFornitoreShort)
    {
        this.codiceFornitoreShort = codiceFornitoreShort;
    }

    public String getRagioneSociale()
    {
        return this.ragioneSociale;
    }

    public void setRagioneSociale(String ragioneSociale)
    {
        this.ragioneSociale = ragioneSociale;
    }

    public String getCodiceFiscale()
    {
        return this.codiceFiscale;
    }

    public void setCodiceFiscale(String codiceFiscale)
    {
        this.codiceFiscale = codiceFiscale;
    }

    public String getPiva()
    {
        return this.piva;
    }

    public void setPiva(String piva)
    {
        this.piva = piva;
    }

    public String getRegistrazioneTribunale()
    {
        return this.registrazioneTribunale;
    }

    public void setRegistrazioneTribunale(String registrazioneTribunale)
    {
        this.registrazioneTribunale = registrazioneTribunale;
    }

    public String getIscrizioneCcia()
    {
        return this.iscrizioneCcia;
    }

    public void setIscrizioneCcia(String iscrizioneCcia)
    {
        this.iscrizioneCcia = iscrizioneCcia;
    }

    public BigDecimal getCapitaleSociale()
    {
        return this.capitaleSociale;
    }

    public void setCapitaleSociale(BigDecimal capitaleSociale)
    {
        this.capitaleSociale = capitaleSociale;
    }

    public String getIndirizzoSl()
    {
        return this.indirizzoSl;
    }

    public void setIndirizzoSl(String indirizzoSl)
    {
        this.indirizzoSl = indirizzoSl;
    }

    public String getComuneSl()
    {
        return this.comuneSl;
    }

    public void setComuneSl(String comuneSl)
    {
        this.comuneSl = comuneSl;
    }

    public Provincia getProvinciaSl()
    {
        return this.provinciaSl;
    }

    public void setProvinciaSl(Provincia provinciaSl)
    {
        this.provinciaSl = provinciaSl;
    }

    public String getCapSl()
    {
        return this.capSl;
    }

    public void setCapSl(String capSl)
    {
        this.capSl = capSl;
    }

    public String getStatoSl()
    {
        return this.statoSl;
    }

    public void setStatoSl(String statoSl)
    {
        this.statoSl = statoSl;
    }

    public String getCodiceIsoSl()
    {
        return this.codiceIsoSl;
    }

    public void setCodiceIsoSl(String codiceIsoSl)
    {
        this.codiceIsoSl = codiceIsoSl;
    }

    public String getCognomeReferenteSl()
    {
        return this.cognomeReferenteSl;
    }

    public void setCognomeReferenteSl(String cognomeReferenteSl)
    {
        this.cognomeReferenteSl = cognomeReferenteSl;
    }

    public String getNomeReferenteSl()
    {
        return this.nomeReferenteSl;
    }

    public void setNomeReferenteSl(String nomeReferenteSl)
    {
        this.nomeReferenteSl = nomeReferenteSl;
    }

    public String getTelefonoSl()
    {
        return this.telefonoSl;
    }

    public void setTelefonoSl(String telefonoSl)
    {
        this.telefonoSl = telefonoSl;
    }

    public String getFaxSl()
    {
        return this.faxSl;
    }

    public void setFaxSl(String faxSl)
    {
        this.faxSl = faxSl;
    }

    public String getTelexSl()
    {
        return this.telexSl;
    }

    public void setTelexSl(String telexSl)
    {
        this.telexSl = telexSl;
    }

    public String getEmailSl()
    {
        return this.emailSl;
    }

    public void setEmailSl(String emailSl)
    {
        this.emailSl = emailSl;
    }

    public String getIndirizzoSa()
    {
        return this.indirizzoSa;
    }

    public void setIndirizzoSa(String indirizzoSa)
    {
        this.indirizzoSa = indirizzoSa;
    }

    public String getComuneSa()
    {
        return this.comuneSa;
    }

    public void setComuneSa(String comuneSa)
    {
        this.comuneSa = comuneSa;
    }

    public Provincia getProvinciaSa()
    {
        return this.provinciaSa;
    }

    public void setProvinciaSa(Provincia provinciaSa)
    {
        this.provinciaSa = provinciaSa;
    }

    public String getCapSa()
    {
        return this.capSa;
    }

    public void setCapSa(String capSa)
    {
        this.capSa = capSa;
    }

    public String getStatoSa()
    {
        return this.statoSa;
    }

    public void setStatoSa(String statoSa)
    {
        this.statoSa = statoSa;
    }

    public String getCognomeReferenteSa()
    {
        return this.cognomeReferenteSa;
    }

    public void setCognomeReferenteSa(String cognomeReferenteSa)
    {
        this.cognomeReferenteSa = cognomeReferenteSa;
    }

    public String getNomeReferenteSa()
    {
        return this.nomeReferenteSa;
    }

    public void setNomeReferenteSa(String nomeReferenteSa)
    {
        this.nomeReferenteSa = nomeReferenteSa;
    }

    public String getTelefonoSa()
    {
        return this.telefonoSa;
    }

    public void setTelefonoSa(String telefonoSa)
    {
        this.telefonoSa = telefonoSa;
    }

    public String getFaxSa()
    {
        return this.faxSa;
    }

    public void setFaxSa(String faxSa)
    {
        this.faxSa = faxSa;
    }

    public String getTelexSa()
    {
        return this.telexSa;
    }

    public void setTelexSa(String telexSa)
    {
        this.telexSa = telexSa;
    }

    public String getEmailSa()
    {
        return this.emailSa;
    }

    public void setEmailSa(String emailSa)
    {
        this.emailSa = emailSa;
    }

    public boolean getOpzioneDlg842005()
    {
        return this.opzioneDlg842005;
    }

    public void setOpzioneDlg842005(boolean opzioneDlg842005)
    {
        this.opzioneDlg842005 = opzioneDlg842005;
    }

    public String getNote()
    {
        return this.note;
    }

    public void setNote(String note)
    {
        this.note = note;
    }

    public String getStatus()
    {
        return this.status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }
    
    /**
     * @return the contoCorrente
     */
    public String getContoCorrente()
    {
        return contoCorrente;
    }

    /**
     * @param contoCorrente the contoCorrente to set
     */
    public void setContoCorrente(String contoCorrente)
    {
        this.contoCorrente = contoCorrente;
    }

    /**
     * @return the cab
     */
    public String getCab()
    {
        return cab;
    }

    /**
     * @param cab the cab to set
     */
    public void setCab(String cab)
    {
        this.cab = cab;
    }

    /**
     * @return the abi
     */
    public String getAbi()
    {
        return abi;
    }

    /**
     * @param abi the abi to set
     */
    public void setAbi(String abi)
    {
        this.abi = abi;
    }

    /**
     * @return the cin
     */
    public String getCin()
    {
        return cin;
    }

    /**
     * @param cin the cin to set
     */
    public void setCin(String cin)
    {
        this.cin = cin;
    }

    /**
     * @return the checkdigit
     */
    public String getCheckdigit()
    {
        return checkdigit;
    }

    /**
     * @param checkdigit the checkdigit to set
     */
    public void setCheckdigit(String checkdigit)
    {
        this.checkdigit = checkdigit;
    }

    /**
     * @return the iban
     */
    public String getIban()
    {
        return iban;
    }

    /**
     * @param iban the iban to set
     */
    public void setIban(String iban)
    {
        this.iban = iban;
    }

    /**
     * @return the denominazioneBanca
     */
    public String getDenominazioneBanca()
    {
        return denominazioneBanca;
    }

    /**
     * @param denominazioneBanca the denominazioneBanca to set
     */
    public void setDenominazioneBanca(String denominazioneBanca)
    {
        this.denominazioneBanca = denominazioneBanca;
    }

    /**
     * @return the denominazioneSportello
     */
    public String getDenominazioneSportello()
    {
        return denominazioneSportello;
    }

    /**
     * @param denominazioneSportello the denominazioneSportello to set
     */
    public void setDenominazioneSportello(String denominazioneSportello)
    {
        this.denominazioneSportello = denominazioneSportello;
    }

    @Override
    public boolean equals(Object obj)
    {
        if (obj instanceof Fornitore)
        {
            Fornitore an = (Fornitore) obj;
            return 
                an.getCodiceFornitoreLong().equalsIgnoreCase(this.getCodiceFornitoreLong()) && 
                an.getCodiceFornitoreShort().equalsIgnoreCase(this.getCodiceFornitoreShort()) && 
                an.getRagioneSociale().equalsIgnoreCase(this.getRagioneSociale()) && 
                an.getCodiceFiscale().equalsIgnoreCase(this.getCodiceFiscale()) && 
                an.getPiva().equals(this.getPiva()) && 
                an.getStatus().equals(this.getStatus());
        }
        else
            return false;
    }

    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = (int) id;
        result = prime * result + ((codiceFornitoreLong == null) ? 0 : codiceFornitoreLong.hashCode());
        result = prime * result + ((codiceFornitoreShort == null) ? 0 : codiceFornitoreShort.hashCode());
        result = prime * result + ((codiceFiscale == null) ? 0 : codiceFiscale.hashCode());
        result = prime * result + ((piva == null) ? 0 : piva.hashCode());
        result = prime * result + ((ragioneSociale == null) ? 0 : ragioneSociale.hashCode());
        result = prime * result + ((status == null) ? 0 : status.hashCode());
        return result;
    }

    @Override
    public String toString()
    {
        final String TAB = "    ";

        StringBuilder retValue = new StringBuilder();

        retValue.append("Fornitore ( ")
        .append(super.toString()).append(TAB)
        .append("id = ").append(this.getId()).append(TAB)
        .append("codiceFornitoreLong = ").append(this.getCodiceFornitoreLong()).append(TAB)
        .append("codiceFornitoreShort = ").append(this.getCodiceFornitoreShort()).append(TAB)
        .append("ragioneSociale = ").append(this.getRagioneSociale()).append(TAB)
        .append("codiceFiscale = ").append(this.getCodiceFiscale()).append(TAB)
        .append("piva = ").append(this.getPiva()).append(TAB)
        .append("registrazioneTribunale = ").append(this.getRegistrazioneTribunale())
        .append(TAB).append("iscrizioneCcia = ").append(this.getIscrizioneCcia()).append(TAB)
        .append("capitaleSociale = ").append(this.getCapitaleSociale()).append(TAB)
        .append("indirizzoSl = ").append(this.getIndirizzoSl()).append(TAB)
        .append("comuneSl = ").append(this.getComuneSl()).append(TAB)
        .append("provinciaSl = ").append(this.getProvinciaSl()).append(TAB)
        .append("capSl = ").append(this.getCapSl()).append(TAB)
        .append("statoSl = ").append(this.getStatoSl()).append(TAB)
        .append("codiceIsoSl = ").append(this.getCodiceIsoSl())
        .append(TAB).append("cognomeReferenteSl = ").append(this.getCognomeReferenteSl()).append(TAB)
        .append("nomeReferenteSl = ").append(this.getNomeReferenteSl()).append(TAB)
        .append("telefonoSl = ").append(this.getTelefonoSl()).append(TAB)
        .append("faxSl = ").append(this.getFaxSl()).append(TAB)
        .append("telexSl = ").append(this.getTelexSl()).append(TAB)
        .append("emailSl = ").append(this.getEmailSl()).append(TAB)
        .append("indirizzoSa = ").append(this.getIndirizzoSa()).append(TAB)
        .append("comuneSa = ").append(this.getComuneSa()).append(TAB)
        .append("provinciaSa = ").append(this.getProvinciaSa()).append(TAB)
        .append("capSa = ").append(this.getCapSa()).append(TAB)
        .append("statoSa = ").append(this.getStatoSa()).append(TAB)
        .append("cognomeReferenteSa = ").append(this.getCognomeReferenteSa()).append(TAB)
        .append("nomeReferenteSa = ").append(this.getNomeReferenteSa()).append(TAB)
        .append("telefonoSa = ").append(this.getTelefonoSa()).append(TAB)
        .append("faxSa = ").append(this.getFaxSa()).append(TAB)
        .append("telexSa = ").append(this.getTelexSa()).append(TAB)
        .append("emailSa = ").append(this.getEmailSa()).append(TAB)
        .append("opzioneDlg842005 = ").append(this.getOpzioneDlg842005()).append(TAB)
        .append("note = ").append(this.getNote()).append(TAB)
        .append("status = ").append(this.getStatus()).append(TAB)
        .append("created = ").append(this.getCreated()).append(TAB)
        .append("creator = ").append(this.getCreator()).append(TAB)
        .append("modified = ").append(this.getModified()).append(TAB)
        .append("modifier = ").append(this.getModifier()).append(TAB)
        .append("sitoWeb = ").append(this.getSitoWeb()).append(TAB)
        .append(" )");

        return retValue.toString();
    }
    
    public String getSitoWeb()
    {
        return sitoWeb;
    }

    public void setSitoWeb(String sitoWeb)
    {
        this.sitoWeb = sitoWeb;
    }

    public String getMobileSa()
    {
        return mobileSa;
    }

    public void setMobileSa(String mobileSa)
    {
        this.mobileSa = mobileSa;
    }

    public String getMobileSl()
    {
        return mobileSl;
    }

    public void setMobileSl(String mobileSl)
    {
        this.mobileSl = mobileSl;
    }

	public Ruolo getRuolo() {
		return ruolo;
	}

	public void setRuolo(Ruolo ruolo) {
		this.ruolo = ruolo;
	}

    
    
}
